package cn.heyige.backend.service;

import com.baomidou.mybatisplus.extension.service.IService;
import cn.heyige.backend.dto.UserDTO;
import cn.heyige.backend.dto.UserDivinationSettingsDTO;
import cn.heyige.backend.dto.UserLoginDTO;
import cn.heyige.backend.dto.UserRegistrationDTO;
import cn.heyige.backend.entity.UserDO;

/**
 * 用户服务接口 - 精简版
 *
 * 专注于核心用户管理功能，提高系统性能和可维护性
 *
 * @author CodeBuddy
 */
public interface UserService extends IService<UserDO> {

    /**
     * 用户注册
     *
     * @param registrationDTO 注册信息
     * @return 注册成功的用户DTO
     */
    UserDTO register(UserRegistrationDTO registrationDTO);

    /**
     * 用户登录
     *
     * @param loginDTO 登录信息
     * @return 登录成功的用户DTO
     */
    UserDTO login(UserLoginDTO loginDTO);

    /**
     * 更新用户心情状态
     *
     * @param userId 用户ID
     * @param moodStatus 心情状态
     * @return 更新后的用户DTO
     */
    UserDTO updateMoodStatus(Integer userId, String moodStatus);

    /**
     * 更新用户当前城市
     *
     * @param userId 用户ID
     * @param currentCity 当前城市
     * @return 更新后的用户DTO
     */
    UserDTO updateCurrentCity(Integer userId, String currentCity);

    /**
     * 将User实体转换为UserDTO
     *
     * @param userDO 用户实体
     * @return 用户DTO
     */
    UserDTO convertToDTO(UserDO userDO);

    /**
     * 获取用户的占卜设置
     *
     * @param userId 用户ID
     * @return 用户占卜设置DTO
     */
    UserDivinationSettingsDTO getUserDivinationSettings(Integer userId);

    /**
     * 更新用户的占卜设置
     *
     * @param userId 用户ID
     * @param settings 占卜设置
     * @return 更新后的用户占卜设置DTO
     */
    UserDivinationSettingsDTO updateUserDivinationSettings(Integer userId, UserDivinationSettingsDTO settings);

}